// 导入sequelize内置的数据类型，这些数据类型对应数据库的表里的不同类型
const { DataTypes } = require("sequelize");
// 导入数据库连接
const seq = require("../db/seq");

// 定义模型（设计表）
const Address = seq.define(
  "zd_addresss",
  {
    user_id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      comment: "用户id",
    },
    consignee: {
      type: DataTypes.STRING,
      allowNull: false,
      comment: "收货人姓名",
    },
    phone: {
      type: DataTypes.CHAR(11),
      allowNull: false,
      comment: "收货人手机号",
    },
    address: {
      type: DataTypes.STRING,
      allowNull: false,
      comment: "收货人地址",
    },
    is_default: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
      defaultValue: false,
      comment: "是否为默认地址, 0: 不是(默认值) 1: 是",
    },
  },
  {
    /**
     * 表名配置：强制指定表名称
     * 若不设置，Sequelize默认会将模型名复数化作为表名（如模型名'user'会对应表名'users'）
     */
    tableName: "zd_addresss",
    /**
     * 是否自动创建 createdAt(创建时刻的时间戳) 和 updatedAt(最新更新的时间戳) 字段，默认值为true。
     * 如果需要自定义这两个字段的名称，可以通过createdAt和updatedAt配置（如createdAt: 'create_time'）。
     */
    timestamps: true,
  },
);

// 同步模型（建表，代码执行后自动创建表，创建表后注释掉）
// Address.sync({
//   force: true,
// });

module.exports = Address;
